package oa.hleast.xswl.pojo.domain.oms;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import oa.hleast.common.base.BaseEntity;
import oa.hleast.xswl.pojo.domain.pms.PmsMarketingField;

import java.util.Date;
import java.util.List;

/**
 * 订单详情表
 *
 * @author 00209
 * @email dz@hleast.com
 * @date 2021/04/12
 */
@Data
@Accessors(chain = true)
public class OmsOrder extends BaseEntity {

	/**
	 * id
	 */
	@TableId(type = IdType.AUTO)
	private Long id;

	/**
	 * 商店ID
	 */
	private Long storeId;
	/**
	 * 订单号
	 */
	private String orderSn;
	/**
	 * 订单总额（分）
	 */
	private Long totalAmount;
	/**
	 * 商品总数
	 */
	private Integer totalQuantity;
	/**
	 * 订单来源[0->PC订单；1->app订单]
	 */
	private Integer sourceType;

	@ApiModelProperty("0: 商城订单 1： 积分订单 2：限时购订单 3：拼组团订单 4：众筹订单")
	private Integer orderType;
	/**
	 * 订单状态【101->待付款；102->用户取消；103->系统取消；201->已付款；202->申请退款；203->已退款；301->待发货；401->已发货；501->用户收货；502->系统收货；901->已完成】
	 */
	private Integer status;
	/**
	 * 订单备注
	 */
	private String remark;
	/**
	 * 会员id
	 */
	private Long memberId;
	@ApiModelProperty("根据订单类型保存不同的相关Id")
	private Long relativeId;
	/**
	 * 使用的优惠券
	 */
	private Long userCouponId;
	/**
	 * 优惠券抵扣金额（分）
	 */
	private Long couponAmount;
	/**
	 * 运费金额（分）
	 */
	private Long freightAmount;
	/**
	 * 应付总额（分）
	 */
	private Long payAmount;

	@ApiModelProperty("订单应付积分")
	private Long payPointAmount;
	/**
	 * 支付时间
	 */
	private Date payTime;
	/**
	 * 支付方式【1->支付宝；2->微信；3->会员余额支付； 4->积分支付】
	 */
	private Integer payType;
	/**
	 * 发货时间
	 */
	private Date deliveryTime;
	/**
	 * 确认收货时间
	 */
	private Date receiveTime;

	/**
	 * 评价时间
	 */
	private Date commentTime;

	@ApiModelProperty("逻辑删除标识 0-未删除 1-已删除")
	@TableLogic(value = "0", delval = "1")
	private Integer deleted;

	@TableField(exist = false)
	private List<OmsOrderItem> orderItems;

	@TableField(exist = false)
	private String startDate;

	@TableField(exist = false)
	private String endDate;

	/**
	 * 是否评价过
	 */
	@ApiModelProperty("是否评价过 0未评价 1评价过")
	private Boolean commented;

	@ApiModelProperty("是否申请过售后 0未申请 1已申请")
	private Boolean refund;

	@ApiModelProperty("订单物流")
	@TableField(exist = false)
	private OmsOrderDelivery omsOrderDelivery;

	@ApiModelProperty("营销场信息")
	@TableField(exist = false)
	private PmsMarketingField pmsMarketingField;

}
